home *** CD-ROM | disk | FTP | other *** search
/ MIDICraft's MIDINET CD-ROM / MIDICraft's MIDINET CD-ROM.iso / DOSUTILS / MIDITRAN.DOC < prev    next >
Text File  |  1996-06-08  |  6KB  |  165 lines

  1.         ******************************
  2.             MIDITRAN v1.1
  3.     
  4.          transposes various values in midi files
  5.               by Guenter Nagler 
  6.                 1995 
  7.           (gnagler@ihm.tu-graz.ac.at)
  8.         ******************************
  9.  
  10. [0] FEATURES
  11.     + reads a binary midi file
  12.     + writes a binary midi file
  13.     + transposition of notes 
  14.     + changing note velocities 
  15.     + changing main volume values
  16.     + selecting midi channels for transposition operations
  17.  
  18. [1] BACKGROUND
  19. Sometimes I use my program MIDIKORG to mute a track of a general midi file
  20. and try to play the track by myself on my keyboard. Specially when I 
  21. buy note sheets of a song I enjoy this possibility very much.
  22. Recently I bought ABBA Gold notes and muted the melody track of the 
  23. song "Thank you for the Music" and tried to play according to the notes.
  24. But this was not easy because the notes were printed in other key than
  25. the midi file was sequenced.
  26. This was the reason that I wrote a program that transposes the notes
  27. of a midi file. It was very easy because its main program (C++ class)
  28. was very close to MIDIKORG program that I programmed earlier.
  29. To make it more useful I decided to enable incrementation of velocity values
  30. and volume values too. Because incrementation of drum notes is not
  31. useful I added the possibility to select the transpose channels.
  32.  
  33. [2] FILES DESCRIPTION
  34.  
  35. MIDITRAN.EXE.........converter program
  36. MIDITRAN.DOC.........this file, showing usage of MIDITRAN.EXE
  37. MIDIIO.HPP...........header file for a c++ midi parser
  38. MIDIIO.CPP...........source code for a c++ midi parser
  39. MIDITRAN.CPP.........c++ source code for midi to text
  40. MIDITRAN.MAK.........make file for project 
  41. MIDITRAN.CFG.........compiler options for make
  42. MIDITRAN.PRJ.........compiler project for borland c++ compilers
  43. only MIDITRAN.EXE is required to run program
  44.  
  45. [3] COPYRIGHT
  46.  
  47. MIDITRAN (c) 1995 was created by Guenter Nagler.
  48.  
  49. MIDITRAN is free and may be used as you wish with this one exception:
  50.  
  51.     You may NOT charge any fee or derive any profit for distribution
  52.     of MIDITRAN.  Thus, you may NOT sell or bundle MIDITRAN with any 
  53.     product in a retail environment (shareware disk distribution, CD-ROM,
  54.     etc.) without permission of the author.
  55.  
  56. You may give MIDITRAN to your friends, upload it to a BBS, or ftp it to
  57. another internet site, as long as you don't charge anything for it.
  58.  
  59. [4] DISCLAIMER
  60.  
  61. MIDITRAN was designed to handle 100% compatible midi files.
  62. So I give no guarantees of the results, especially with non 100% 
  63. compatible midi files.
  64. If you find a midi file that you think to be 100% compatible midi
  65. that is not correctly converted, please send a sample file to 
  66. gnagler@ihm.tu-graz.ac.at . 
  67.  
  68. Use MIDITRAN at your own risk.  Anything you do with MIDITRAN is your
  69. responsibility, and not the author's.  Any damage caused to any person,
  70. computer, software, hardware, company, or business by running MIDITRAN 
  71. is your responsibility, and the author will not be liable.
  72.  
  73. If you don't understand these terms, or are not sure of something, or
  74. are afraid something bad might come of using MIDITRAN, don't  use  it!
  75. You are here forewarned.
  76.  
  77. [5] INSTALLATION
  78.  
  79. [MSDOS]
  80. Simply copy MIDITRAN.EXE in a directory that is in your path.
  81. When you start the program without arguments
  82.  
  83. [UNIX]
  84. compile sources with your C++ compiler (e.g. GNU Compiler g++):
  85.  
  86. g++ -o miditran miditran.cpp midiio.cpp
  87.  
  88. and run program
  89.  
  90. $ miditran
  91.  
  92. C:\> MIDITRAN
  93.  
  94. you should get the usage text (see next section)
  95.  
  96. [6] USAGE
  97.  
  98. MidiTranspose increments notes,velocity,volume by a given value
  99. usage: MidiTranspose [-q][-channel #][-velocity #][-volume #][-note #] file.mid transpos.mid
  100. -q\tbe quiet
  101. -velocity #\tadd # to all note velocities (-127..+127)
  102. -volume #\tadd # to all volume events (-127..+127)
  103. -note#\tadd # to all note values (-127..+127)
  104. -channel #\tchanges are done only on these channels (1-16)
  105. At least one of the options -velocity, -volume, -note must be used.
  106. Default channels are 1-9 and 11-16 (drum channel 10 not included)
  107.  
  108. The parts in brackets [...] are optional.
  109.  
  110. Incrementation values can be negative (this is same as decrementation 
  111. of the invers value).
  112. Note incrementation of +12 will transpose the notes by an octave
  113.  
  114. Warning:
  115.   Do not expect that MIDITRAN will produce a copy of the original
  116.   file if no translations are done! MIDI allows to encode its
  117.   commands in different ways without changing the semantic of the
  118.   notes (It is allowed to compress the midi file by ommiting
  119.   redunant command bytes, but it is no duty).
  120.  
  121. [8] SUGGESTIONS / COMMENTS / BUG REPORTS / QUESTIONS
  122.  
  123.          WWW:    http://hgiicm.tu-graz.ac.at/Cpub
  124.           contains all my dos/unix midi programs
  125.          EMAIL:  gnagler@ihm.tu-graz.ac.at
  126.  
  127. [9] USE
  128.  
  129. example: note transposition of a general midi file thankyou.mid
  130.   1. try to find key or a characteristic note of the song midi file 
  131.      e.g. play midi and try to play a simple part with a keyboard
  132.           use MIDI2TXT to get note names of the midi files
  133.      thankyou.mid:   C5 C5 C5 C5 B4 A4 ...
  134.  
  135.   2. play the notes in the key that you want
  136.      or find the characteristic notes in the note sheets
  137.      note sheet:     D5 D5 D5 D5 C#5 B4     ...
  138.  
  139.   3. count the difference between the notes in both variants
  140.      C5  0
  141.      C#5 +1 
  142.      D5  +2
  143.  
  144.   4. miditran -note +2 thankyou.mid thank.mid
  145.      choose an alternate destination filename (e.g. thank.mid)
  146.      
  147.      All notes but the drum notes on channel 10 are incremented by 
  148.      value 2.
  149.  
  150. example: make drums on channel 10 heavier
  151.      miditran -velocity 20 -channel 10 song.mid heavier.mid
  152.  
  153. example: decrease volume at channels 3 and 5 by 10
  154.      miditran -volume -10 -channel 3 5 song.mid notloud.mid
  155.      This will only work if there are really volume midi commands 
  156.      on these channels. If there is no such a command default volume 
  157.      will be assumed and the decrementation can not be applied.
  158.  
  159. [10] CHANGES
  160. v1.0 to v1.1:
  161.   * normalizing overflow/underflow of incrementation
  162.   * default channels are 1-16 except for incrementation of notes
  163.     (where notes on channel 10 are never incremented, because these are
  164.     different drum instruments)
  165.